home *** CD-ROM | disk | FTP | other *** search
Text File | 2002-10-21 | 27.0 KB | 1,122 lines |
- // Spotlight system created by Mackey McCandlish.
- //
- // Before level waittill prespawn "exec global/spotlight.scr".
- //
- // Used in m1l2a, m1l2b, m4l3, m6l2a, and probably some other place too.
- //
- // Create a script_model with model "miscobj/searchlightbase.tik"
- //
- // Give it a targetname "spotlight".
- //
- // Create an AI and a turretweapon_german_mg42. Target the spotlight to the guy to the gun.
- //
- // Create a trigger_multiple around the spotlight with targetname "spotdamage". Assign it the damage flag.
- //
- // Create a bunch of script_origins (At least 5) with targetname "spotsearch". These are the places the spotlight will flick
- // to when it is in "Alert" mode.
- //
- // Give the spotlight, spotdamage, and spotsearches the same #set value. Also give them a #group value. The way it works is,
- // and spotlights that are supposed to share proximity have the same #set value, but every set of spotlight/spotdamage/spot
- // searches have their own unique #group to associate them together. So a bunch of spotlights working together would all have
- // #set 1, but each set of spotlight/spotdamage/spotsearches would have a different #group.
- //
- // Along the ground, create a loop of info_splinepaths. The targetname of one of the splinepaths must be "spotpath#1_#2"
- // where #1 is the #set value of the spotlight that is supposed to shine on this path, and #2 is the #group value of that
- // spotlight.
- //
- // Whenever the spotlight completes its loop, level.spottime["spot#1_#2"] is equal to the current level.time. This let's you
- // do neat stuff like the SAS agent dodging the spotlight.
- //
- // You can give vehicles coronas when their lights are on by doing:
- // exec global/spotlight.scr::corona $truck "light left"
- // exec global/spotlight.scr::corona $truck "light right"
- //
- // Where $truck is the name of the vehicle. "$truck.corona = 0" turns off the coronas (and you would normally do
- // "$truck anim idlenolights" at the same place to turn off the model lights).
-
- main:
-
- level waittill prespawn
-
- // This script does not work in multiplayer
- if ( level.gametype > 0 )
- {
- println ("The spotlight script does not work correctly in multiplayer" )
- end
- }
-
- if (level.spotrespondtime == NIL)
- level.spotrespondtime = 5
-
- if (level.spot_burstmin == NIL)
- level.spot_burstmin = 3
-
- if (level.spot_burstmax == NIL)
- level.spot_burstmax = 6
-
- if (level.spot_burstdownmin == NIL)
- level.spot_burstdownmin = 1
-
- if (level.spot_burstdownmax == NIL)
- level.spot_burstdownmax = 3
-
-
-
- if ($spotdamage == NULL)
- level.spotdamages = 0
- else
- level.spotdamages = $spotdamage.size
-
- if (level.spotdamages > 0)
- {
- level.spotdamage = exec global/makearray.scr $spotdamage
-
- for (local.i=1;local.i<level.spotdamages+1;local.i++)
- {
-
- if (level.spotdamage[local.i].set == NIL)
- {
- println ("Warning, spotdamage at " + level.spotdamage[local.i].origin + " has no #set, setting to 1")
- level.spotdamage[local.i].set = 1
- }
-
- if (level.spotdamage[local.i].group == NIL)
- println ("Error, spotdamage at " + level.spotdamage[local.i].origin + " has no #group")
- else
- println ("Spawned spotdamage " + local.i)
- }
- }
-
-
- if ($spotlight == NULL)
- level.spotlights = 0
- else
- level.spotlights = $spotlight.size
-
- if (level.spotlights > 0)
- {
- level.spotlight = exec global/makearray.scr $spotlight
-
- for (local.i=1;local.i<level.spotlights+1;local.i++)
- {
- level.spotlight[local.i] thread spotwatch
-
- if (level.spotlight[local.i].set == NIL)
- {
- println ("Warning, spotlight at " + level.spotlight[local.i].origin + " has no #set, setting to 1")
- level.spotlight[local.i].set = 1
- }
-
- if (level.spotlight[local.i].group == NIL)
- println ("Error, spotlight at " + level.spotlight[local.i].origin + " has no #group")
- else
- println ("Spawned spotlight " + local.i)
-
- for (local.p=1;local.p<level.spotdamages+1;local.p++)
- {
- if ((level.spotdamage[local.p].set == level.spotlight[local.i].set) && (level.spotdamage[local.p].group == level.spotlight[local.i].group))
- level.spotlight[local.i].damage = level.spotdamage[local.p]
- }
-
- if (level.spotplayertime[level.spotlight[local.i].set] == NIL)
- thread spottracker level.spotlight[local.i].set
-
- }
- }
-
-
- if ($spotsearch == NULL)
- level.spotsearchs = 0
- else
- level.spotsearchs = $spotsearch.size
-
- if (level.spotsearchs > 0)
- {
- level.spotsearch = exec global/makearray.scr $spotsearch
-
- for (local.i=1;local.i<level.spotsearchs+1;local.i++)
- {
- level.spotsearch[local.i] hide
- level.spotsearch[local.i] notsolid
-
- if (level.spotsearch[local.i].set == NIL)
- {
- println ("Warning, spotsearch at " + level.spotsearch[local.i].origin + " has no #set, setting to 1")
- level.spotsearch[local.i].set = 1
- }
-
- if (level.spotsearch[local.i].group == NIL)
- println ("Error, spotsearch at " + level.spotsearch[local.i].origin + " has no #group")
- else
- println ("Spawned spotsearch " + local.i)
- }
- }
-
-
- if ($spotcover == NULL)
- level.spotcovers = 0
- else
- level.spotcovers = $spotcover.size
-
- if (level.spotcovers > 0)
- level.spotcover = exec global/makearray.scr $spotcover
-
-
- if (level.spottarget == NIL)
- level.spottarget = $player
-
- level waittill spawn
-
- while (isalive $player)
- {
- if !(isalive level.spottarget)
- {
- // println "level spottarget is the player!"
- level.spottarget = $player
-
-
- for (local.i=1;local.i<level.spotlights+1;local.i++)
- {
- level.spotplayertime[level.spotlight[local.i].set] = level.time - 5
- level.spotplayer[level.spotlight[local.i].set] = 0
- level.spotnervous[level.spotlight[local.i].set]++
- }
- }
-
- wait 3
- }
-
- end
-
- spotpath:
-
- local.path = $("spotpath" + self.set + "_" + self.group)
- while (self.checkdeath == 0)
- {
- level.spottime[("spot" + self.set + "_" + self.group)] = level.time
- self.org.origin = local.path.origin
- self.org flypath local.path 250 750 200
- self.org waitmove
- }
- end
-
- spotdamage:
- while (1)
- {
- self.damage waittill trigger
- if (parm.other != $("world"))
- {
- self.destroyed = 1
-
- if (self.checkdeath != 1)
- {
- self.checkdeath = 1
- level.spotnervous[self.set]++
- }
-
- end
- }
- }
- end
-
- spotowner:
- thread spotowner_death
- self hearing 2000
- self sight 0
- local.ent = spawn script_origin
- local.ent.origin = self.origin
- self leash 0
- self tether local.ent
- self mindist 0
- self maxdist 1
- self exec global/disable_ai.scr
- self.fastcheck = 0
- local.shooting = 0
- // self.gun bulletspread 100 100
- self.on_target = 0
- self.visible = 1
-
-
- local.ent2 = spawn script_origin
- local.org = angles_toforward (self.gun.angles)
- local.org = (local.org * 150) + (self.gun.origin)
- local.ent2.origin = local.org
-
-
- while (self.parent.checkdeath != 1)
- {
- wait (randomint(level.spotrespondtime) + 1.5)
-
- if ((level.spotplayer[self.parent.set] == 1) && (self.parent.on_target == 1))
- {
- //*** If the spotlight can see the player, the gunner shoots
-
- self.gun setAimTarget level.spottarget
- // self.gun burstFireSettings 0.5 2 1 2
- self.gun burstFireSettings level.spot_burstmin level.spot_burstmax level.spot_burstdownmin level.spot_burstdownmax
- // self.gun maxyawoffset 45
- self.gun startFiring
- local.shooting = 1
- }
- else
- if (local.shooting == 1)
- if (( level.spotplayer[self.parent.set] != 1 ) || (self.parent.on_target != 1))
- {
- wait 4
-
- self.gun clearAimTarget
- self.gun stopFiring
- self.gun setAimTarget local.ent2
- // self.gun maxyawoffset 45
- local.shooting = 0
- }
-
- wait 1
- }
-
- self.on_target_time = 0
- while (1)
- {
- wait (randomint(level.spotrespondtime) + 1.5)
-
- if (self.visible == 1)
- {
- if (self cansee level.spottarget)
- {
- //*** If the spotlight can see the player, the gunner shoots
-
- self.gun setAimTarget level.spottarget
- self.gun burstFireSettings level.spot_burstmin level.spot_burstmax level.spot_burstdownmin level.spot_burstdownmax
- // self.gun maxyawoffset 45
- self.gun startFiring
- local.shooting = 1
- }
- else
- if (local.shooting == 1)
- if ( level.spotplayer[self.parent.set] != 1 )
- {
- wait 5
-
- self.gun clearAimTarget
- self.gun stopFiring
- self.gun setAimTarget local.ent2
- // self.gun maxyawoffset 45
- local.shooting = 0
- }
- }
- else
- {
- self.gun clearAimTarget
- self.gun stopFiring
- }
-
- }
- end
-
- spotowner_death:
- self waittill death
-
- self.gun clearAimTarget
- self.gun stopFiring
- self.parent.spotterdeath = 1
-
- for (local.i=1;local.i<level.spotlights+1;local.i++)
- {
- if (level.spotlight[local.i].set == self.parent.set)
- level.spotlight[local.i].spotter threatbias 100
- }
-
- level.spotplayer[self.parent.set] = 1
- level.spotplayertime[self.parent.set] = level.time + 6
- level.spotnervous[self.parent.set]++
-
-
- /*
-
- if ((self.parent) && (self.parent.checkdeath != 1))
- {
- // self.parent.checkdeath = 1
- // println "killed by owner"
- level.spotnervous[self.parent.set]++
- }
- */
-
- group delete
-
- end
- /*
- println ("Enabled my AI!!")
- self exec global/enable_ai.scr
- wait 0.25
-
- while (self.thinkstate == "attack")
- wait 1
-
- while (self.thinkstate != "attack")
- wait 1
-
- println ("Disabled my AI!!")
- self exec global/disable_ai.scr
- wait 2
-
- level.spotnervous[self.parent.set]++
- println ("Made spots of set " + self.parent.set + " nervous")
-
- while (level.time < self.parent.searchtime)
- wait 1
- }
-
- if (self.parent.checkdeath != 1)
- {
- self.parent.checkdeath = 1
- println "killed by owner"
- level.spotnervous[self.parent.set]++
- }
- end
- */
-
-
- seepath:
- local.ent = spawn script_model
- local.ent model animal/cockroach.tik
- local.ent scale 100
- local.ent notsolid
- local.ent glue self
- end
-
-
- spotwatch:
- level waittill spawn
-
- if (self.target)
- {
- self.spotter = $(self.target)
-
- if (self.spotter.target)
- {
- self.spotter type_idle "machinegunner"
- self.spotter type_attack "machinegunner"
- self.spotter type_disguise "machinegunner"
- self.spotter type_grenade "machinegunner"
- self.spotter gun "MG42"
- self.spotter.turret = self.spotter.target
- println (self.spotter.turret + " and the target " + self.spotter.target)
- self.spotter.gun = self.spotter.target
- }
- else
- println ("Error, spotlight at " + level.spotlight[local.i].origin + " has no mg42 targetted to its gunner")
- }
- else
- println ("Error, spotlight at " + level.spotlight[local.i].origin + " has no gunner targetted")
-
- self.health = 1
- self scale 1
- level.spotplayer[self.set] = 0
- level.spotnervous[self.set] = 0
- self.searchtime = level.time
- self.lightdist = 0
- self.spotterdeath = 0
-
- self.spotnervous = level.spotnervous[self.set]
- local.light = spawn script_model
- local.light model "fx/dummy.tik"
- self.spotlight = local.light
- if (getcvar(debug) == "1")
- self.spotlight thread seepath
- self.light = local.light
-
- local.light light (1.0 1.0 1.0)
- local.light lightRadius 300
- local.light lightOn
- local.light notsolid
-
- self model "miscobj/searchlightbase.tik"
- self.angles = (0 0 0)
-
- local.bulb = spawn script_model
- local.bulb model "miscobj/searchlight.tik"
- local.bulb scale 1
- local.bulb.origin = self.origin + (0 0 32)
- self.bulb = local.bulb
-
- local.bulb bind self
- local.bulb notsolid
-
- local.flare = spawn script_model
- local.flare model "fx/searchlight.tik"
- local.flare.origin = self.origin + (64 0 64)
- self.flare = local.flare
-
- local.flare bind self
- local.flare notsolid
-
- local.org = spawn script_origin
- local.org.origin = self.origin
- self.org = local.org
-
- self.currentaim = self.org
-
- self notsolid
- self.checkdeath = 0
- // local.org anim start
- local.org light (1.0 1.0 1.0)
- local.org lightRadius 300
- local.org lightOn
- local.org notsolid
- self thread spotpath
-
- self thread spotdamage
-
- self.spotter.health = 1
- self.spotter.parent = self
- self.spotter thread spotowner
- // self.spotter thread alivecheck
-
- waitthread swaptarg
- self thread search
- local.thread1 = parm.previousthread
- self.mode = 0
-
- local.skip = level.time
-
- if (self.seekorigin == NIL)
- self.seekorigin = self.origin
-
- local.curframe = 0
-
- local.threadtimer = level.time + 0.15
- self thread light_corona
-
- while ((self.checkdeath == 0) && (isalive $(self.spotter)))
- {
- if (getcvar(spotlight) == "1")
- if (self.on_target == 1)
- println ("Spotlight" + self.set + "/" + self.group + " is ON target")
- else
- println ("Spotlight" + self.set + "/" + self.group + " is OFFarget")
-
-
- if (self.on_target == 1)
- {
- self.on_target_time--
- // if (level.time > self.on_target_time)
- if (self.on_target_time < 1)
- {
- self.on_target = 0
- self.spotter.gun stopFiring
- }
- // else
- // println ("set/group " + self.set + "/" + self.group + " is ON TARGET")
- }
- // else
- // println ("set/group " + self.set + "/" + self.group + " is OFF target")
-
-
- if (self.currentaim == self.org)
- {
- self.spotlight.origin = self.org.origin
- self waitthread aimspot
-
- if (self.fastcheck == 0)
- local.threadtimer = level.time + 0.2
- else
- local.threadtimer = level.time
- }
- else
- if (level.time > local.threadtimer)
- {
- self.spotlight.origin = trace self.bulb.origin self.currentaim.origin 0
- self waitthread aimspot
-
-
- if (self.fastcheck == 0)
- local.threadtimer = level.time + 0.2
- else
- local.threadtimer = level.time
- }
-
- if (level.spotnervous[self.set] != self.spotnervous)
- {
- if (self.on_target == 0)
- self.found_target = 0
-
- self.searchtime = level.time + 8 + randomint (3)
- self.spotnervous = level.spotnervous[self.set]
- self.currentaim = self.search
- self.search.origin = self.org.origin
- }
-
-
- waitframe
-
- /*
- if (game.detail == 1)
- waitframe
- else
- wait 0.1
- */
-
- }
-
-
-
- if !(isalive self.spotter)
- {
- while (self.checkdeath == 0)
- wait 0.1
- }
-
- local.bulb model "miscobj/searchlightoff.tik"
- local.bulb notsolid
-
- if (self.destroyed != NIL)
- {
- self playsound explode_searchlight
- exec global/model.scr self.origin models/fx/fx_spotlighthit
- }
-
- if (local.thread1)
- local.thread1 delete
-
-
- self.org lightOff
- local.light delete
- self.search delete
- local.flare delete
- self.damage delete
-
-
- // while (isalive $(self.spotter))
- // wait 2
-
- // self delete
-
- end
-
- light_corona:
- while (self.checkdeath == 0)
- {
- local.org = self.currentaim.origin
- local.vect1 = (local.org - self.origin)
- local.vect1 = vector_toangles (local.vect1)
- local.angles = self.angles
- local.angles[1] = local.vect1[1]
- // self.angles = local.angles
- local.angles = self.angles
- local.angles[0] = local.vect1[0] + 180
- local.angles[1] = 0
- // self.bulb.angles = local.angles
-
-
- local.vect = self.origin - self.currentaim.origin
- local.vect = vector_normalize (local.vect)
- local.dist = 16 // was 32
-
- local.vect[0] = local.vect[0] * local.dist
- local.vect[1] = local.vect[1] * local.dist
- local.vect[2] = local.vect[2] * local.dist
- self.flare.origin = self.bulb.origin - local.vect
- self.flare scale 5
-
- local.vect = $player.origin - self.origin
- local.vect = vector_normalize (local.vect)
-
- local.angles = angles_toforward ($player.angles)
- local.vect[0] = local.vect[0] * local.angles[0]
- local.vect[1] = local.vect[1] * local.angles[1]
- local.vect[2] = local.vect[2] * local.angles[2]
-
-
- local.org1 = $player.origin + (0 0 64)
- local.ang1 = $player.angles
-
- local.org2 = self.bulb.origin
- local.ang2 = local.vect1
-
- //println ("ang1 " + local.ang1 + " and ang2 " + local.ang2 + " and combined " + (local.ang1 + local.ang2))
-
- // local.returnvalue = the value that you should use for an alpha
-
- // local.v1 = angles_toforward local.ang1
- local.v1 = vector_normalize (local.org1 - local.org2)
- local.v2 = angles_toforward local.ang2
-
- local.f1 = local.v1[0] * local.v2[0] + local.v1[1] * local.v2[1] + local.v1[2] * local.v2[2]
- if(local.f1 > 0)
- local.returnvalue = local.f1 * local.f1
- else
- local.returnvalue = 0
-
- // corona
- self.flare scale (local.returnvalue * 25)
- waitframe
- }
- end
-
- /*
- alivecheck:
- while (1)
- {
- wait 1
- if (isalive self)
- println "alive"
- else
- println "dead"
- }
- end
- */
-
- aimspot:
-
- // self.seekorigin = trace $(self.targetname + "bulb").origin $(self.targetname + self.aimtarget).origin 0
-
-
- // else
- // self.spotlight.origin = self.org
-
-
-
- self.lightdist = 100 + ((vector_length(self.origin - self.spotlight.origin)) * 0.15)
- self.light lightRadius self.lightdist
-
- local.org = self.currentaim.origin
- local.vect1 = (local.org - self.origin)
- local.vect1 = vector_toangles (local.vect1)
- local.angles = self.angles
- local.angles[1] = local.vect1[1]
- self.angles = local.angles
- local.angles = self.angles
- local.angles[0] = local.vect1[0] + 180
- local.angles[1] = 0
- self.bulb.angles = local.angles
-
-
-
- local.spottarget = level.spottarget
- local.spottargetorigin = level.spottarget.origin
-
- // if (level.spot
- if (vector_length(self.spotlight.origin - local.spottargetorigin) < self.lightdist)
- {
- local.vect = trace self.spotlight.origin local.spottargetorigin 1
- if ((local.vect[0] == local.spottargetorigin[0]) && (local.vect[1] == local.spottargetorigin[1]) && (local.vect[2] == local.spottargetorigin[2]))
- {
- local.break = 0
-
- for (local.i=1;local.i<level.spotcovers+1;local.i++)
- {
- if (local.spottarget istouching level.spotcover[local.i])
- local.break = 1
- }
-
- if (($player.is_disguised == 1) && (level.spottarget == $player))
- local.break = 1
-
- if (local.break == 0)
- {
-
- self.on_target = 1
- self.found_target = 1
-
- if (level.spotplayer[self.set] != 1)
- {
- local.trans = 0
- level.spotnervous[self.set]++
- }
-
- self.on_target_time = 2 // = level.time + 0.5
-
- level.spotplayer[self.set] = 1
- level.spotplayertime[self.set] = level.time + 6
- self.spotplayer = 1
- self.currentaim = self.search
- self.searchtime = level.time + 2 + randomint (3)
- }
- else
- {
- self.on_target = 0
- self.spotter.gun stopFiring
- }
-
- }
- }
-
- if (level.spotplayer[self.set] == 1)
- self.search.origin = self.spotlight.origin
- end
-
- spottracker local.set:
- level.spotplayertime[local.set] = 1
- level waittill spawn
- wait 2
-
- level.spotplayertime[local.set] = level.time - 5
-
- while (1)
- {
- // println ("time left " + (level.spotplayertime[local.set] - level.time))
-
- if ( level.time > level.spotplayertime[local.set] )
- {
- level.spotplayer[local.set] = 0
- }
- else
- {
- level.spotplayer[local.set] = 1
- }
-
- wait 0.25
-
- // level.spotplayertime
- }
- end
-
-
- swaptarg:
- local.search = spawn script_origin
- self.search = local.search
-
- local.search.origin = self.org.origin
- /*
- local.search light (1.0 1.0 1.0)
- local.search lightRadius 300
- local.search lightOn
- local.search notsolid
- local.search lightOff
- */
-
- self.searchnum = -1
- end
-
- search:
-
- local.trans = 0
- local.trans2 = 0
- self.lastorigin = self.origin
- self.found_target = 0
-
- while (self.checkdeath == 0)
- {
- if (self.currentaim != self.search)
- {
- local.trans = 0
- self.search.origin = self.org.origin
- local.start = self.org.origin
- }
-
-
- if (level.spotplayer[self.set] == 1)
- {
-
- if (self.found_target == 1)
- {
- if (self.on_target == 1)
- {
- self.fastcheck = 1
- local.org = self.search.origin
- local.dest = level.spottarget.origin
- local.trans = 0.1
- for (local.i=0;local.i<3;local.i++)
- local.org[local.i] = (local.org[local.i] * (1 - local.trans)) + (local.dest[local.i] * local.trans)
- self.search.origin = local.org
- }
- else
- {
- self.fastcheck = 1
- local.org = self.lastorigin
- local.dest = self.lastorigin
- local.trans = 0.1
- for (local.i=0;local.i<3;local.i++)
- local.org[local.i] = (local.org[local.i] * (1 - local.trans)) + (local.dest[local.i] * local.trans)
- self.search.origin = local.org
- }
- }
- else
- {
- self.fastcheck = 1
- local.org = self.search.origin
- local.dest = level.spottarget.origin
- local.trans = 0.1
- for (local.i=0;local.i<3;local.i++)
- local.org[local.i] = (local.org[local.i] * (1 - local.trans)) + (local.dest[local.i] * local.trans)
- self.search.origin = local.org
- }
-
- }
- else
- if (level.time > self.searchtime)
- {
- self.fastcheck = 1
-
- local.org = self.search.origin
- local.dest = self.org.origin
-
- for (local.i=0;local.i<3;local.i++)
- local.org[local.i] = (local.org[local.i] * (1 - local.trans2)) + (local.dest[local.i] * local.trans2)
-
- self.search.origin = local.org
- local.trans2 = local.trans2 + 0.01
-
-
- if (self.spotplayer == 1)
- {
- self.spotplayer = 0
- self.searchtime = level.time + 5 + randomint(5)
-
- self.searchnum = -1
- local.trans = 1
-
- wait (0.4 + randomfloat(1))
- }
- else
- if (local.trans2 > 1.0)
- {
- self.currentaim = self.org
- self.searchtime = level.time + 99999
- self.fastcheck = 0
-
- }
-
- }
- else
- {
-
- local.trans2 = 0
-
- if ((local.trans == 1) || (self.searchnum == -1))
- {
- /*
- local.searcharray = -1
- local.searches = 0
- for (local.i=1;local.i<level.spotsearchs+1;local.i++)
- {
- if (self.set == level.spotsearch[local.i].set)
- local.searcharray
- }
- */
-
- self.fastcheck = 1
- local.oldnum = self.searchnum
- while (self.searchnum == local.oldnum)
- {
-
- self.searchnum = randomint(level.spotsearchs) + 1
-
- if ((level.spotsearch[self.searchnum].set == self.set) && (level.spotsearch[self.searchnum].group == self.group))
- {
- local.start = self.search.origin
- local.trans = 0
- local.transrate = 0.01
- local.transratemax = 0.12
- local.transratemax = 0.12
- local.transratemin = 0.03
-
- wait (0.4 + randomfloat(1))
- }
- else
- self.searchnum = local.oldnum
-
- waitframe
- }
- }
-
- local.org = local.start
- local.dest = level.spotsearch[self.searchnum].origin
-
- for (local.i=0;local.i<3;local.i++)
- local.org[local.i] = (local.org[local.i] * (1 - local.trans)) + (local.dest[local.i] * local.trans)
-
- self.search.origin = local.org
- local.trans = local.trans + local.transrate
-
- if (local.trans > 1)
- local.trans = 1
- if (local.trans < 0.7)
- {
- if (local.transrate < local.transratemax)
- local.transrate = local.transrate + 0.005
- }
- else
- {
- if (local.transrate > local.transratemin)
- local.transrate = local.transrate - 0.01
- }
- }
- waitframe
- self.lastorigin = local.org
- }
-
- end
-
-
- // light left light right
- corona local.obj local.tag:
-
- // local.obj is the object with the light on it
- // local.tag is the tag where the light appears
-
- local.flare = spawn script_model
- local.flare model "fx/searchlight.tik"
- local.flare notsolid
-
- local.obj.corona = 1
-
- // local.flare.origin = local.obj gettagposition local.tag
- // local.flare bind local.obj
- local.flare attach local.obj local.tag 0 ( 0 0 0 )
-
-
- while ((isalive local.obj) && (local.obj.corona == 1))
- {
-
- local.vect = $player.origin - local.flare.origin
- local.vect = vector_normalize (local.vect)
-
- local.angles = angles_toforward ($player.angles)
- local.vect[0] = local.vect[0] * local.angles[0]
- local.vect[1] = local.vect[1] * local.angles[1]
- local.vect[2] = local.vect[2] * local.angles[2]
-
- local.org1 = $player.origin + (0 0 64)
- local.ang1 = $player.angles
-
- local.org2 = local.flare.origin
- local.ang2 = local.obj.angles
-
- local.v1 = vector_normalize (local.org1 - local.org2)
- local.v2 = angles_toforward local.ang2
-
- local.f1 = local.v1[0] * local.v2[0] + local.v1[1] * local.v2[1] + local.v1[2] * local.v2[2]
- if(local.f1 > 0)
- local.returnvalue = local.f1 * local.f1
- else
- local.returnvalue = 0
-
- local.flare scale (local.returnvalue * 5)
- waitframe
-
- }
-
- if ((isalive local.obj) && (local.obj.corona == 0))
- local.flare delete
-
- end
-
-
- // light left light right
- deadcorona local.obj local.tag:
-
- // local.obj is the object with the light on it
- // local.tag is the tag where the light appears
-
- local.flare = spawn script_model
- local.flare model "fx/searchlight.tik"
- local.flare notsolid
-
- local.obj.corona = 1
-
- // local.flare.origin = local.obj gettagposition local.tag
- // local.flare bind local.obj
- local.flare attach local.obj local.tag 0 ( 0 0 0 )
-
- while (local.obj.corona == 1)
- {
-
- local.vect = $player.origin - local.flare.origin
- local.vect = vector_normalize (local.vect)
-
- local.angles = angles_toforward ($player.angles)
- local.vect[0] = local.vect[0] * local.angles[0]
- local.vect[1] = local.vect[1] * local.angles[1]
- local.vect[2] = local.vect[2] * local.angles[2]
-
- local.org1 = $player.origin + (0 0 64)
- local.ang1 = $player.angles
-
- local.org2 = local.flare.origin
- local.ang2 = local.obj.angles
-
- local.v1 = vector_normalize (local.org1 - local.org2)
- local.v2 = angles_toforward local.ang2
-
- local.f1 = local.v1[0] * local.v2[0] + local.v1[1] * local.v2[1] + local.v1[2] * local.v2[2]
- if(local.f1 > 0)
- local.returnvalue = local.f1 * local.f1
- else
- local.returnvalue = 0
-
- local.flare scale (local.returnvalue * 5)
- waitframe
-
- }
-
- local.flare delete
-
- end
-
- // light middle
- // a larger scaled corona befitting a train
- traincorona local.obj local.tag:
-
- // local.obj is the object with the light on it
- // local.tag is the tag where the light appears
-
- local.flare = spawn script_model
- local.flare model "fx/searchlight.tik"
- local.flare notsolid
-
- local.obj.corona = 1
-
- // local.flare.origin = local.obj gettagposition local.tag
- // local.flare bind local.obj
- local.flare attach local.obj local.tag 0 ( 0 0 0 )
-
- while (local.obj.corona == 1)
- {
-
- local.vect = $player.origin - local.flare.origin
- local.vect = vector_normalize (local.vect)
-
- local.angles = angles_toforward ($player.angles)
- local.vect[0] = local.vect[0] * local.angles[0]
- local.vect[1] = local.vect[1] * local.angles[1]
- local.vect[2] = local.vect[2] * local.angles[2]
-
- local.org1 = $player.origin + (0 0 64)
- local.ang1 = $player.angles
-
- local.org2 = local.flare.origin
- local.ang2 = local.obj.angles
-
- local.v1 = vector_normalize (local.org1 - local.org2)
- local.v2 = angles_toforward local.ang2
-
- local.f1 = local.v1[0] * local.v2[0] + local.v1[1] * local.v2[1] + local.v1[2] * local.v2[2]
- if(local.f1 > 0)
- local.returnvalue = local.f1 * local.f1
- else
- local.returnvalue = 0
-
- local.flare scale (local.returnvalue * 10)
- waitframe
-
- }
-
- local.flare delete
- end
-
- flame:
- exec global/model.scr self.origin models/fx/fx_spotlighthit
- /*
- spawn emitters/fire "targetname" (self.targetname + "fire")
- $(self.targetname + "fire") light (1.0 0.8 0.0)
- $(self.targetname + "fire") lightOn
-
- spawn emitters/firesmoke "targetname" (self.targetname + "firesmoke")
- $(self.targetname + "firesmoke").origin = self.origin + (0 0 135)
- $(self.targetname + "firesmoke").angles = (270 0 0)
- $(self.targetname + "fire").origin = self.origin
- */
-
- end
-